package 抽象类GeometricFigure及其子类;

/**
 * @author ：wang-ting
 * @Date：2025/6/21 23:18
 */
/**
 * 有一个名为GeometricFigure的抽象类，该类的代码如下：
 *
 * public abstract class GeometricFigure {
 *     public abstract double getArea();
 *     public abstract double getPerimeter();
 * }
 * 为GeometricFigure类定义派生类Circle、EquilateralTriangle、Rectangle和Square，在四个子类中实现抽象类的所有抽象方法，此外：
 *
 * Circle（圆）类新增了私有数据域radius和对应构造方法。
 * EquilateralTriangle（等边三角形）类新增了私有数据域side和对应构造方法。
 * Rectangle（矩形）类新增了私有数据域height、width和对应构造方法。
 * Square（正方形）类新增了私有数据域side和对应构造方法。
 */

import java.util.Scanner;
public class TestGeometricFigure {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        double radius,height,width,side;
        radius = input.nextDouble();
        Circle circle = new Circle(radius);
        printGeometricFigure(circle);
        height = input.nextDouble();
        width = input.nextDouble();
        Rectangle rectangle = new Rectangle(height,width);
        printGeometricFigure(rectangle);
        side = input.nextDouble();
        Square square = new Square(side);
        printGeometricFigure(square);
        side = input.nextDouble();
        EquilateralTriangle equilateralTriangle = new EquilateralTriangle(side);
        printGeometricFigure(equilateralTriangle);
    }
    public static void printGeometricFigure(GeometricFigure geo){
        System.out.print(geo.getClass().getSimpleName() +": ");
        System.out.print("area = " + geo.getArea() + " ");
        System.out.println("perimeter = " + geo.getPerimeter());
    }
}
